﻿using System;
using System.Collections;
using System.Linq;
using System.Text;

namespace NGI_Entidades
{
    public class Proveedor : CamposAuditoria
    {
        #region Propiedades
        private Int32 _id = 0;
        private String _cuit = "";
        private String _razonSocial = "";
        private String _email = "";
        private String _direccion = "";
        private String _codigoPostal = "";
        private String _ciudad = "";
        private String _localidad = "";
        private String _contacto = "";
        private Double _saldoTotal = 0;
        private Provincia _provincia;
        private String _ingresosBrutos = "";
        private Int32 _isib = 0;
        private CategoriaIVA _categoriaIVA;
        private Telefono[] _telefonos;
        private Boolean _activo;
        #endregion Propiedades

        #region Getters y Setters
        public Int32 ID
        {
            get { return _id; }
            set { _id = value; }
        }

        public String IngresosBrutos
        {
            get { return _ingresosBrutos; }
            set { _ingresosBrutos = value; }
        }

        public String Localidad
        {
            get { return _localidad; }
            set { _localidad = value; }
        }

        public Int32 ISIB
        {
            get { return _isib; }
            set { _isib = value; }
        }

        public Double SaldoTotal
        {
            get { return _saldoTotal; }
            set { _saldoTotal = value; }
        }

        public Provincia Provincia
        {
            get { return _provincia; }
            set { _provincia = value; }
        }

        public String CUIT
        {
            get { return _cuit; }
            set { _cuit = value; }
        }

        public String RazonSocial
        {
            get { return _razonSocial; }
            set { _razonSocial = value; }
        }

        public String Email
        {
            get { return _email; }
            set { _email = value; }
        }

        public String Direccion
        {
            get { return _direccion; }
            set { _direccion = value; }
        }

        public String CodigoPostal
        {
            get { return _codigoPostal; }
            set { _codigoPostal = value; }
        }

        public String Ciudad
        {
            get { return _ciudad; }
            set { _ciudad = value; }
        }

        public String Contacto
        {
            get { return _contacto; }
            set { _contacto = value; }
        }

        public CategoriaIVA CategoriaIVA
        {
            get { return _categoriaIVA; }
            set { _categoriaIVA = value; }
        }

        public Telefono[] Telefonos
        {
            get { return _telefonos; }
            set { _telefonos = value; }
        }

        public Boolean Activo
        {
            get { return _activo; }
            set { _activo = value; }
        }
        #endregion Getters y Setters

        #region Constructores
        public Proveedor() { }

        public Proveedor(Int32 Id)
        {
            this._id = Id;
        }

        public Proveedor(Int32 ID, String RazonSocial)
        {
            this._id = ID;
            this._razonSocial = RazonSocial;
        }

        public Proveedor(Int32 ID, String RazonSocial, String CUIT, Double SaldoTotal, Boolean Activo)
        {
            this._id = ID;
            this._razonSocial = RazonSocial;
            this._cuit = CUIT;
            this._saldoTotal = SaldoTotal;
            this._activo = Activo;
        }

        public Proveedor(Int32 ID, String CUIT, String RazonSocial, String Email, String Direccion, String CodigoPostal, String Ciudad, String Localidad, Provincia Provincia, String Contacto, String IngresosBrutos, Int32 ISIB, Double SaldoTotal, CategoriaIVA Categoria, Telefono[] Telefonos, Boolean Activo)
            :this(CUIT, RazonSocial, Email, Direccion, CodigoPostal, Ciudad, Localidad, Provincia, Contacto, IngresosBrutos, ISIB, SaldoTotal, Categoria, Telefonos, Activo)
        {
            this._id = ID;
        }

        public Proveedor(Int32 ID, String CUIT, String RazonSocial, String Email, String Direccion, String CodigoPostal, String Ciudad, String Localidad, Provincia Provincia, String Contacto, String IngresosBrutos, Int32 ISIB, Double SaldoTotal, CategoriaIVA Categoria, Boolean Activo)
        {
            this._id = ID;
            this._cuit = CUIT;
            this._razonSocial = RazonSocial;
            this._email = Email;
            this._direccion = Direccion;
            this._codigoPostal = CodigoPostal;
            this._ciudad = Ciudad;
            this._provincia = Provincia;
            this._contacto = Contacto;
            this._ingresosBrutos = IngresosBrutos;
            this._isib = ISIB;
            this._localidad = Localidad;
            this._categoriaIVA = Categoria;
            this._saldoTotal = SaldoTotal;
            this._activo = Activo;
        }

        public Proveedor(String CUIT, String RazonSocial, String Email, String Direccion, String CodigoPostal, String Ciudad, String Localidad, Provincia Provincia, String Contacto, String IngresosBrutos, Int32 ISIB, Double SaldoTotal, CategoriaIVA Categoria, Telefono[] Telefonos, Boolean Activo)
        {
            this._cuit = CUIT;
            this._razonSocial = RazonSocial;
            this._email = Email;
            this._direccion = Direccion;
            this._codigoPostal = CodigoPostal;
            this._ciudad = Ciudad;
            this._contacto = Contacto;
            this._saldoTotal = SaldoTotal;
            this._categoriaIVA = Categoria;
            this._ingresosBrutos = IngresosBrutos;
            this._isib = ISIB;
            this._localidad = Localidad;
            this._provincia = Provincia;
            this._telefonos = Telefonos;
            this._activo = Activo;
        }
        #endregion Constructores

        #region Constructores Estáticos
        public static Proveedor SinDatos(Int32 Id)
        {
            return new Proveedor(Id);
        }

        public static Proveedor Existente(Int32 ID, String CUIT, String RazonSocial, String Email, String Direccion, String CodigoPostal, String Ciudad, String Localidad, Provincia Provincia, String Contacto, String IngresosBrutos, Int32 ISIB, Double SaldoTotal, CategoriaIVA Categoria, Telefono[] Telefonos, Boolean Activo)
        {
            return new Proveedor(ID, CUIT, RazonSocial, Email, Direccion, CodigoPostal, Ciudad, Localidad, Provincia, Contacto, IngresosBrutos, ISIB, SaldoTotal, Categoria, Telefonos, Activo);
        }

        public static Proveedor Existente(Int32 ID, String CUIT, String RazonSocial, String Email, String Direccion, String CodigoPostal, String Ciudad, String Localidad, Provincia Provincia, String Contacto, String IngresosBrutos, Int32 ISIB, Double SaldoTotal, CategoriaIVA Categoria, Boolean Activo)
        {
            return new Proveedor(ID, CUIT, RazonSocial, Email, Direccion, CodigoPostal, Ciudad, Localidad, Provincia, Contacto, IngresosBrutos, ISIB, SaldoTotal, Categoria, Activo);
        }

        public static Proveedor Nuevo(String CUIT, String RazonSocial, String Email, String Direccion, String CodigoPostal, String Ciudad, String Localidad, Provincia Provincia, String Contacto, String IngresosBrutos, Int32 ISIB, Double SaldoTotal, CategoriaIVA Categoria, Telefono[] Telefonos, Boolean Activo)
        {
            return new Proveedor(CUIT, RazonSocial, Email, Direccion, CodigoPostal, Ciudad, Localidad, Provincia, Contacto, IngresosBrutos, ISIB, SaldoTotal, Categoria, Telefonos, Activo);
        }

        public static Proveedor ParaListar(Int32 ID, String RazonSocial)
        {
            return new Proveedor(ID, RazonSocial);
        }

        public static Proveedor ParaCuentaCorriente(Int32 ID, String RazonSocial, String CUIT, Double SaldoTotal, Boolean Activo)
        {
            return new Proveedor(ID, RazonSocial, CUIT, SaldoTotal, Activo);
        }
        #endregion Constructores Estáticos
    }
}
